本文同步刊登於 k2r2bai.com Blog。
昨天分享了如何使用 Kubeadm 工具來升級既有叢集,過程中可以發現 Kubeadm 升級時,將許多複雜的工作做了許多簡化,因此讓不熟悉 Kubernetes 的人也能輕易達成叢集元件更新事情。雖然工具協助我們更簡單的達成某些功能是很好的事,但不是所有狀況都能透過 Kubeadm,假設在升級時,發生問題的話,要該怎麼辦呢?這時可能會因為不熟悉整個升級過程,而不知如何下手來解決問題。基於上述原因,今天就是要來分析 Kubeadm 的叢集更新是如何實作的,以讓我們能夠在發生問題時,更快的解決。
從昨天操作的流程中,我們了解到透過 Kubeadm 更新叢集的指令流程:
圖中,我們會發現 kubeadm 最少用一個指令就完成更新的過程,但是事實上這一個指令背後做了許多事情,接下來各小節將針對圖中的指令進行解析。
該指令主要檢查是否可以升級目前叢集到指定的 Kubernetes 版本,這過程會進行驗證以下幾件事情:
這邊做的事情很簡單,主要都是檢查當前與目標版本狀態,並顯示資訊讓使用者知道狀況。
一但檢查都沒問題後,我們就可以執行kubeadm upgrade apply
來進行主節點的更新,這時 kubeadm 會開始進行以下流程:
/var/lib/kubelet/config.yaml
中。/var/lib/kubelet/kubeadm-flags.env
檔案,以確保使用新版本的參數。在更新叢集中,kubeadm 會分為第一主節點
、其他主節點
與工作節點
來進行,而想要更新到新版本,必須先在任一台主節點上執行kubeadm upgrade apply
指令,來確保新版本的組態檔被新增到 Kubernetes 叢集中。一但有了新版本組態資訊後,就能在其他節點執行kubeadm upgrade node
進行更新,而執行該指令時,又會依據節點的角色分成主節點
與工作節點
進行,這兩者流程如下所示:
/var/lib/kubelet/config.yaml
中。/var/lib/kubelet/kubeadm-flags.env
檔案,以確保使用新版本的參數。今天簡單分析 kubeadm 更新流程,以學習 kubeadm 叢集更新的實踐方式,透過瞭解其流程也能確保發生問題時,能更快知道問題點。且實際了解後,才能知道如何針對調整過參數的叢集進行更新,因為執行預設值時,kubeadm 會將過去的設定覆蓋掉,並且以升級版本的最佳實踐組態來設定,因此可能會造成原本舊版本叢集有開這功能,但新版本則沒有問題。
最近時間被一些事情影響到,沒辦法在短時間內,寫出更多詳細與完整內容,這邊深感抱歉... 我這之後會再利用時間繼續將這挑戰文章優化與調整,以讓大家可以看到更多東西。